package opgave2;

public class NatuurlijkGetal implements NatuurlijkGetalInterface {
	private StringBuffer data;
	
	public NatuurlijkGetal() {
		data = new StringBuffer();
		data.append(0);
	}
	
	public NatuurlijkGetal(NatuurlijkGetal src) {
		data = new StringBuffer(src.data);
	}
	
	public void init(char c) {
		data = new StringBuffer();
		data.append(c);
	}
	
	public void voegNummerToe(char c) {
		if(data.charAt(0) == '0') {
			init(c);
		} else {
			data.append(c);
		}
	}
	
	public char geefNummerOpPlaats(int n) {
		return data.charAt(n);
	}
	
	public int lengte() {
		return data.length();
	}
	
	public int compareTo(NatuurlijkGetal ng) {
		
		if(lengte() > ng.lengte()) {
			return 1;
		} else if (lengte() < ng.lengte()) {
			return -1;
		}
		
		// Dit gebeurt alleen als de NatuurlijkGetal objecten dezelfde lengte hebben.
		for(int i = 0; i < lengte(); i++) {
			if(geefNummerOpPlaats(i) > ng.geefNummerOpPlaats(i)) {
				return 1;
			} else if (geefNummerOpPlaats(i) < ng.geefNummerOpPlaats(i)) {
				return -1;
			}
		}
		
		return 0;
	}
	
	public int compareTo(Object o) {
		NatuurlijkGetal ng = (NatuurlijkGetal)o;
		
		if(lengte() > ng.lengte()) {
			return 1;
		} else if (lengte() < ng.lengte()) {
			return -1;
		}
		
		// Dit gebeurt alleen als de NatuurlijkGetal objecten dezelfde lengte hebben.
		for(int i = 0; i < lengte(); i++) {
			if(geefNummerOpPlaats(i) > ng.geefNummerOpPlaats(i)) {
				return 1;
			} else if (geefNummerOpPlaats(i) < ng.geefNummerOpPlaats(i)) {
				return -1;
			}
		}
		
		return 0;
	}
	
	public NatuurlijkGetal clone() {
		NatuurlijkGetal resultaat = new NatuurlijkGetal();
		
		resultaat.init(geefNummerOpPlaats(0));
		
		for(int i = 1; i < lengte(); i++) {
			resultaat.voegNummerToe(geefNummerOpPlaats(i));
		}
		
		return resultaat;
	}
}
